1. Field of Invention
The field of invention relates generally to computer systems and, more specifically but not exclusively, relates to debugging of a computer system from firmware.
2. Background Information
In typical computer architecture, the initialization and configuration of the computer system by the Basic Input/Output System (BIOS) is commonly referred to as the pre-boot phase. The pre-boot phase is generally defined as the firmware that runs between the processor reset and the first instruction of the Operating System (OS) loader. At the start of a pre-boot, it is up to the code in the firmware to initialize the system to the point that an operating system loaded off of media, such as a hard disk, can take over. The start of the OS load begins the period commonly referred to as OS runtime. During OS runtime, the firmware may act as an interface between software and hardware components of a computer system. As computer systems have become more sophisticated, the operational environment between the OS level and the hardware level is generally referred to as the firmware or the firmware environment.
Debugging errors and malfunctions in a deployed computer system can be difficult and expensive. When a problem is not repeatable in a laboratory, a technician must travel to the site of the computer system in order to evaluate the system. In some cases, the technician will attach an In-Circuit Emulator (ICE) to monitor the platform operations. Such probes may cost up to $25,000 each. Some ICEs are sandwiched between the central processing unit (CPU) and the motherboard, while others are connected to the platform via a Joint Test Action Group (JTAG) port on the motherboard. If the problem appears to occur randomly in several systems in a network, it becomes impractical and cost prohibitive to install multiple ICE's across multiple machines. Also, the technician often has to stay at the customer's location waiting for the error to repeat itself.
Current software debuggers have limited capabilities. They exist only during the OS runtime phase and do not provide debugging support during the pre-boot phase of the computer system. These debuggers are often OS applications so changes to a system's OS may require changes to the debugger.